/**
 * 给定数字串，问是9的倍数的子序列数量
 * 令Dij是字符串S[0...i]模9等于j的子序列的数量
 * 则答案就是 D[N][0]
 * 用刷表法方便点
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;
using pii = pair<int, int>;
using pll = pair<llt, llt>;
using vi = vector<int>;
using vvi = vector<vi>;
using int128 = __int128_t;

llt const MOD = 1000000007LL;

string S;

llt proc(){
    int n = S.length();
    vector<array<llt, 9>> D(n, array<llt, 9>());

    D[0][(S[0] - '0')%9] = 1;

    for(int i=1;i<n;++i){
        auto & d = D[i];
        const auto & prev = D[i - 1];
        copy(prev.begin(), prev.end(), d.begin());

        auto tmp = (S[i] - '0') % 9;
        for(int j=0;j<9;++j){
            (d[(j + tmp) % 9] += prev[j]) %= MOD;            
        }
        (d[tmp] += 1) %= MOD;
    }

    return D[n - 1][0];
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> S;
    cout << proc() << endl;
    return 0;
}

